//! Header for the FilledShapeFactory-class
/*!
	\file FilledShapeFactory.h
	\author Thomas Pfeiffer
	\date 13.11.2012

*/
#ifndef FILLEDSHAPEFACTORY_H
#define FILLEDSHAPEFACTORY_H

#include "IShapeFactory.h"
#include "SingletonBase.h"
#include "FilledShapeFactory.h"

//! Implements the interface IShapeFactory to create filled shapes.
/*!
\class FilledShapeFactory
The class FilledShapeFactory implements interface functions createCircle and createRectangle.
Results are filled shapes.
*/
class FilledShapeFactory : public SingletonBase<FilledShapeFactory>, public IShapeFactory {
public:
	
	//! Creates a filled circle
	/*!
	createCircle creates a new object of class FilledCircle
	\param origin The center of the circle in a picture.
	\param radius The radius of a circle.
	\param color The color a circle has.
	\return Shape* returns the newly created shape
	*/
	Shape* createCircle( TPosition const& origin, float const& radius, std::string const& color );

	//! Creates a filled Rectangle
	/*!
	createRectangle creates a new object of class FilledRectangle
	\param origin The position of the top left corner of the rectangle in a picture.
	\param size The dimensions of a rectangle.
	\param color The color a rectangle has.
	\return Shape* returns the newly created shape
	*/
	Shape* createRectangle( TPosition const& origin, TSize const& size, std::string const& color );

	friend class SingletonBase<FilledShapeFactory>;
};

#endif